1. Field of the Invention
This invention generally relates to the field of computer applications, and more specifically to a dynamic software update system for such applications.
2. Description of Related Art
Computer networks such as the Internet allow users to share resources such as files and hardware. The expansion of the Internet and the adoption of standards for the World Wide Web have made the viewing and downloading of files by a user almost effortless. The user need not know any programming languages. By simply running a Web browser, the user only needs to point and click to view and download desired files. The availability of such programs allows for easy collaboration and file sharing among like-minded individuals separated by great distances over a distributed computer network, which can literally span the entire globe.
In a conventional client/server infrastructure, a distributed computer network is set up to have at least one server node and multiple client nodes. In particular, each user node is a client that can access a server node over the network and, with the proper authorization, publish files to the server node. Once a file is published to the server node, other clients on the network can access the server node to view or download the file. Additionally, the server node can allow a client to automatically send a file to another client that is reachable over the network. The client simply sends the file to the server node along with information identifying the desired recipient, and the server node sends the file on to the corresponding client. The server node can also be used to allow the clients to share hardware resources such as a printer.
It is now common practice for computer applications to include an “update” feature which checks a location on the Internet for updates to its source code. A computer application typically checks for an update whenever it launches, periodically or in response to a user request. The update operation downloads the updated program components, then requires the user to restart the computer application to apply the updates. This type of update operation is disruptive to the user experience, and therefore, many software providers release updates relatively infrequently. Furthermore, it is very difficult for a Web site or critical systems operator to shut down and restart an application. At the same time, it is difficult, if not impossible, to apply updates dynamically (without restarting the computer application) to a computer application implemented in a statically compiled language, such as C or C++.
Therefore a need exists to overcome the problems discussed above, and particularly for a way to more efficiently update computer applications.